Programació d'automatismes i robots amb Arduino, Processing i Android
8.- Servomotor (0 a 360º)
El servomotor de gir continu gira 360 º sense poder-se aturar en un angle concret de forma predeterminada llevat que li acoblem un encoder.
El que anem a gastar , el DS04-NFC té una torsió de 5,5 Kg/cm a 4,8 V , treballa entre 4,8V i 6V, i pesa 38 g.
Si anem a utilitzar el servomotor amb carrega, cal que connectem a V extern la placa Arduino per protegir l'ordinador on fem les proves. Mira l'esquema elèctric.
Mira el programa per controlar aquest servomotor de gir continu.
// Programa per fer anar el servomotor de gir continu DS04-NFC. Gira 360 graus de forma continua.
// Llicencia GNU GPL V3 https://www.gnu.org/licenses/gpl-3.0.html
// Autor BARRAGAN http://barraganstudio.com
// Modificat ( 19-nov-2016) Carles Ferrando Garcia
#include <Servo.h>
Servo servo1; // crea el objecte servomotor1
int pos; // Posició de l'angle que regulara la velocitat del servomotor de gir continu
// Pos 0 fa sermotor1 gire de forma Horaria velocitat max
// Pos 180 fa servomotor1 gire de forma Antihoraria a velocitat max
// Pos 90 fa servomotor1 estiga quasi aturat
// La funcio servo1.detach(); atura completament el servomotor1
// per cal reactivar el servomotor1 si volem que torne a funcionar
// Quan mes proxim esta el angle a 90 graus per exces o per defecte mes lentament gira el servomotor1
// Quan mes proxim esta el angle a 0 graus o a 180 graus mes rapid gira el motor
void setup() {
servo1.attach(9); //Connecta el servo1 al port 9 d'Arduino
Serial.begin(9600); // Anem a deixar missatges al monitor serie
}
void loop() {
//servo1 parat (equivalent a angle de 90 graus)
pos = 90;
servo1.write(pos);
Serial.println(" servo1 parat = equivalent a angle de 90 graus ");
delay(2000); //Deixa 2 segons el servo1 parat
//servo1 100 per cent AntiHorari (equivalente a angle de 180 graus)
pos = 180;
servo1.write(pos);
Serial.println(" servo 100 per cent AntiHorari = equivalente a angle de 180 graus ");
delay(2000); //Deixa 2 segons el servo1 en marxa
//servo1 AntiHorari a baixa velocitat (equivalente a angle de 95 graus)
pos = 95;
servo1.write(pos);
Serial.println(" servo AntiHorari a baixa velocitat = equivalente a angle de 95 graus ");
delay(2000); //Deixa 2 segons el servo1 en marxa
//servo1 parat COMPLETAMENT (utilitzem la funcio detach)
servo1.detach(); // Desconectem el servo1 de la placa Arduino
Serial.println(" servo1 parat COMPLETAMENT = utilitzem la funcio detach");
delay(2000); //Deixa 2 segons el servo1 parat
servo1.attach(9); //Connecta el servo1 al port 9 d'Arduino
//servo1 100 per cent Horari = equivalent a angle de 0 graus
pos = 0;
servo1.write(pos);
Serial.println(" servo1 100 per cent Horari = equivalent a anagle de 0 graus ");
delay(2000); //Deixa 2 segons el servo1 en marxa
//servo1 Horari a baixa velocitat = equivalent a angle de 85 graus
pos = 85;
servo1.write(pos);
Serial.println(" Horari a baixa velocitat = equivalent a angle de 85 graus ");
delay(2000); //Deixa 2 segons el servo1 en marxa
}
|
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0